/*
 * @Author: jiu yin
 * @Date: 2025-01-08 10:16:10
 * @FilePath: \node-socket-sersvice\setup.js
 * @LastEditTime: 2025-01-15 18:06:10
 * @LastEditors: jiu yin zhen jing
 */

const pkg = require('./package.json');
const { exec } = require('child_process');
const path = require('path');
const fs = require('fs');

// 可能的 Inno Setup 安装路径
const possibleInnoSetupPaths = [
    'C:\\Program Files (x86)\\Inno Setup 6\\ISCC.exe',
    'C:\\Program Files\\Inno Setup 6\\ISCC.exe',
    // 添加其他可能的路径
];

// 查找 ISCC.exe
function findIconSetup() {
    for (const path of possibleInnoSetupPaths) {
        if (fs.existsSync(path)) {
            return path;
        }
    }
    return null;
}

// 创建必要的目录
const dirs = ['dist',"setup","envConfig"];
dirs.forEach(dir => {
    if (!fs.existsSync(dir)) {
        fs.mkdirSync(dir, { recursive: true });
    }
});

// 使用 pkg 打包
console.log('开始打包 EXE...');
exec(`pkg . --targets node16-win-x64 --output dist/${pkg.name}.exe`, (error, stdout, stderr) => {
    if (error) {
        console.error(`打包错误: ${error}`);
        return;
    }
    console.log('EXE 打包完成！');
    
    // 复制其他必要文件到 dist 目录
    console.log('复制必要文件...');
    const filesToCopy = [
        { src: 'assets/logo.ico', dest: 'dist/logo.ico' },
        { src: './wrapConfig.js', dest: 'dist/wrapConfig.js' },
        // 添加其他需要复制的文件
    ];

    filesToCopy.forEach(file => {
        if (fs.existsSync(file.src)) {
            fs.copyFileSync(file.src, file.dest);
        }
    });

    // 查找 Inno Setup
    const innoSetupPath = findIconSetup();
    if (!innoSetupPath) {
        console.error('错误: 找不到 Inno Setup，请确保已安装 Inno Setup');
        console.log('下载地址: https://jrsoftware.org/isdl.php');
        return;
    }

    // 使用 Inno Setup 创建安装程序
    console.log('创建安装程序...');
    console.log(`使用 Inno Setup 路径: ${innoSetupPath}`);
    
    exec(`"${innoSetupPath}" setup.iss`, (error, stdout, stderr) => {
        if (error) {
            console.error(`创建安装程序失败: ${error}`);
            return;
        }
        console.log('安装程序创建成功！');
        console.log('输出目录: setup/Node播控服务setup.exe');
    });
});
